import cefsharpAdapter from '../cefsharp'

// === 分组相关处理函数 ===
export async function handleGroupRequests(method, url, data, params) {
    console.log('🔍 [API] 分组请求:', { method, url, data, params })
    // GET请求处理
    if (method === 'get') {
        // 获取完整分组树（包含设备）
        if (/\/groups\/tree\/all/.test(url)) {
            return await cefsharpAdapter.callDbMethod('GetGroupTreeWithDevices', 1)
        }
        // 获取分组树
        if (/\/groups\/tree/.test(url)) {
            return await cefsharpAdapter.callDbMethod('GetAllGroups', 1)
        }
        // 获取分组设备列表
        if (/\/groups\/[^/]+\/devices$/.test(url)) {
            const groupId = url.split('/')[2]
            console.log('🔍 [API] CefSharp获取分组设备列表:', groupId)
            return await cefsharpAdapter.callDbMethod('GetGroupDevices', { groupId })
        }
    }

    // POST请求处理
    if (method === 'post') {
        // 创建分组
        if (/\/groups$/.test(url)) {
            return await cefsharpAdapter.callDbMethod('AddGroup', data?.title || '')
        }
        // 在分组中创建设备
        if (/\/groups\/[^/]+\/devices$/.test(url)) {
            const groupId = url.split('/')[2]
            const deviceData = { groupId, ...data }
            console.log('🔍 [API] CefSharp添加分组设备:', deviceData)
            // 需要把数据转换为json字符串
            return await cefsharpAdapter.callDbMethod('AddGroupDevice', JSON.stringify(deviceData))
        }
        // 导出设备
        if (/\/groups\/export$/.test(url)) {
            console.log('🔍 [API] 导出设备:', data.params)
            return await cefsharpAdapter.callDbMethod('ExportGroupDevice', data.params)
        }
        // 导入设备
        if (/\/groups\/import$/.test(url)) {
            console.log('🔍 [API] 导入设备:', data.params)
            return await cefsharpAdapter.callDbMethod('ImportGroupDevice', data.params)
        }
    }

    // PUT请求处理
    if (method === 'put') {
        // 更新分组
        if (/\/groups\/[^/]+$/.test(url)) {
            const groupId = url.split('/').pop()
            const updateData = { id: groupId, title: data }
            return await cefsharpAdapter.callDbMethod('UpdateGroup', updateData)
        }
        // 更新分组中的设备
        if (/\/groups\/[^/]+\/devices\/[^/]+$/.test(url)) {
            const urlParts = url.split('/')
            const groupId = parseInt(urlParts[2], 10)  // 转换为数字
            const deviceId = parseInt(urlParts[4], 10)  // 转换为数字
            // 确保URL中的deviceId优先级最高，不被data中的id覆盖
            const deviceData = { ...data, id: deviceId, groupId }
            // 需要把数据转换为json字符串
            return await cefsharpAdapter.callDbMethod('UpdateGroupDevice', JSON.stringify(deviceData))
        }
    }

    // DELETE请求处理
    if (method === 'delete') {
        // 删除分组
        if (/\/groups\/[^/]+$/.test(url)) {
            const groupId = url.split('/').pop()
            return await cefsharpAdapter.callDbMethod('DeleteGroup', groupId)
        }
        // 删除分组中的设备
        if (/\/groups\/[^/]+\/devices\/[^/]+$/.test(url)) {
            const urlParts = url.split('/')
            const groupId = parseInt(urlParts[2], 10)  // 转换为数字
            const deviceId = parseInt(urlParts[4], 10)  // 转换为数字
            
            console.log('🔍 [API] 删除设备URL解析调试:', { 
                url, 
                urlParts, 
                groupId, 
                deviceId,
                urlPartsLength: urlParts.length 
            })
            
            console.log('🔍 [API] CefSharp删除分组设备:', { groupId, deviceId })
            return await cefsharpAdapter.callDbMethod('DeleteGroupDevice', deviceId)
        }
    }

    return null
} 